package com.settlement.system.model.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.model.entity.common.BaseModel;
import com.settlement.system.model.entity.common.TblRefundAuditBillDtl;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * 退款稽核单据主表
 * @author xiaochuan
 * @since 2020-06-28
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblRefundAuditBillVo extends BaseModel implements Serializable {

    /**
     * 责任方编码
     */
    private String responsibleNo;

    /**
     * 责任方
     */
    private String responsibleName;

    /**
     * 损失原因编码
     */
    private String lossReasonNo;

    /**
     * 损失原因
     */
    private String lossReasonName;

    /**
     * 单据状态编码
     */
    private String billStatusNo;

    /**
     * 单据状态名称
     */
    private String billStatusName;

    /**
     * 单据编码
     */
    @ExcelProperty(value = "单据编码")
    @ApiModelProperty(value = "单据编码")
    private String billNo;

    /**
     * 优购单号
     */
    @ExcelProperty(value = "优购单号")
    @ApiModelProperty(value = "优购单号")
    private String refBillNo;

    /**
     * 订单来源
     */
    @ExcelProperty(value = "订单来源")
    @ApiModelProperty(value = "订单来源")
    private String orderSource;


    /**
     * 订单三级来源名称(店铺)
     */
    @ExcelProperty(value = "订单三级来源名称")
    @ApiModelProperty(value = "订单三级来源名称")
    private String threeLevelChannelName;


    /**
     * 退款时间
     */
    @ExcelProperty(value = "退款时间")
    @ApiModelProperty(value = "退款时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date backAmountDate;

    /**
     * 下单时间
     */
    @ExcelProperty(value = "下单时间")
    @ApiModelProperty(value = "下单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderDate;

    /**
     * 差异数量
     */
    @ExcelProperty(value = "差异数量")
    @ApiModelProperty(value = "差异数量")
    private Integer diffQty;

    /**
     * 差异金额
     */
    @ExcelProperty(value = "差异金额")
    @ApiModelProperty(value = "差异金额")
    private BigDecimal diffAmount;


    /**
     * 客服初步核实人
     */
    @ExcelProperty(value = "客服初步核实人")
    @ApiModelProperty(value = "客服初步核实人")
    private String firstServicePersonName;


    /**
     * 原始外部订单号
     */
    @ExcelProperty(value = "原始外部订单号")
    @ApiModelProperty(value = "原始外部订单号")
    private String spOrderNo;



    /**
     * 责任部门核实人
     */
    @ApiModelProperty(value = "责任部门核实人")
    private String responsiblePerson;

    /**
     * 是否有操作权限
     */
    @ApiModelProperty(value = "是否有操作权限")
    private boolean isAuth;

    /**
     * 是否有操作权限
     */

    private RefundSendAndReturnVo refundSendAndReturnVo;

    /**
     * 单据核查日志
     */
    private List<TblRefundAuditBillDtl> tblRefundAuditBillDtl;


    public String getBillStatusName() {
        return billStatusName;
    }

    public void setBillStatusName(String billStatusName) {
        this.billStatusName = billStatusName;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getRefBillNo() {
        return refBillNo;
    }

    public void setRefBillNo(String refBillNo) {
        this.refBillNo = refBillNo;
    }

    public String getOrderSource() {
        return orderSource;
    }

    public void setOrderSource(String orderSource) {
        this.orderSource = orderSource;
    }

    public String getThreeLevelChannelName() {
        return threeLevelChannelName;
    }

    public void setThreeLevelChannelName(String threeLevelChannelName) {
        this.threeLevelChannelName = threeLevelChannelName;
    }

    public Date getBackAmountDate() {
        return backAmountDate;
    }

    public void setBackAmountDate(Date backAmountDate) {
        this.backAmountDate = backAmountDate;
    }

    public Date getOrderDate() {
        return orderDate;
    }

    public void setOrderDate(Date orderDate) {
        this.orderDate = orderDate;
    }

    public Integer getDiffQty() {
        return diffQty;
    }

    public void setDiffQty(Integer diffQty) {
        this.diffQty = diffQty;
    }

    public BigDecimal getDiffAmount() {
        return diffAmount;
    }

    public void setDiffAmount(BigDecimal diffAmount) {
        this.diffAmount = diffAmount;
    }

    public String getFirstServicePersonName() {
        return firstServicePersonName;
    }

    public void setFirstServicePersonName(String firstServicePersonName) {
        this.firstServicePersonName = firstServicePersonName;
    }

    public String getSpOrderNo() {
        return spOrderNo;
    }

    public void setSpOrderNo(String spOrderNo) {
        this.spOrderNo = spOrderNo;
    }

    public String getResponsiblePerson() {
        return responsiblePerson;
    }

    public void setResponsiblePerson(String responsiblePerson) {
        this.responsiblePerson = responsiblePerson;
    }

    public boolean isAuth() {
        return isAuth;
    }

    public void setAuth(boolean auth) {
        isAuth = auth;
    }

    public RefundSendAndReturnVo getRefundSendAndReturnVo() {
        return refundSendAndReturnVo;
    }

    public void setRefundSendAndReturnVo(RefundSendAndReturnVo refundSendAndReturnVo) {
        this.refundSendAndReturnVo = refundSendAndReturnVo;
    }

    public List<TblRefundAuditBillDtl> getTblRefundAuditBillDtl() {
        return tblRefundAuditBillDtl;
    }

    public void setTblRefundAuditBillDtl(List<TblRefundAuditBillDtl> tblRefundAuditBillDtl) {
        this.tblRefundAuditBillDtl = tblRefundAuditBillDtl;
    }

    public String getResponsibleNo() {
        return responsibleNo;
    }

    public void setResponsibleNo(String responsibleNo) {
        this.responsibleNo = responsibleNo;
    }

    public String getResponsibleName() {
        return responsibleName;
    }

    public void setResponsibleName(String responsibleName) {
        this.responsibleName = responsibleName;
    }

    public String getLossReasonNo() {
        return lossReasonNo;
    }

    public void setLossReasonNo(String lossReasonNo) {
        this.lossReasonNo = lossReasonNo;
    }

    public String getLossReasonName() {
        return lossReasonName;
    }

    public void setLossReasonName(String lossReasonName) {
        this.lossReasonName = lossReasonName;
    }

    public String getBillStatusNo() {
        return billStatusNo;
    }

    public void setBillStatusNo(String billStatusNo) {
        this.billStatusNo = billStatusNo;
    }

    /**
     * 退款发退款信息
     */
    public static class RefundSendAndReturnVo{
        /**
         * 品牌编码
         */
        @ExcelProperty(value = "品牌编码")
        @ApiModelProperty(value = "品牌编码")
        private String brandNo;

        /**
         * 品牌名称
         */
        @ExcelProperty(value = "品牌名称")
        @ApiModelProperty(value = "品牌名称")
        private String brandName;

        /**
         * 商品编码(出厂时的商品编码)
         */
        @ExcelProperty(value = "商品编码(出厂时的商品编码)")
        @ApiModelProperty(value = "商品编码(出厂时的商品编码)")
        private String itemCode;

        /**
         * 商品尺码
         */
        @ExcelProperty(value = "商品尺码")
        @ApiModelProperty(value = "商品尺码")
        private String sizeNo;

        /**
         * 商品条码
         */
        @ExcelProperty(value = "商品条码")
        @ApiModelProperty(value = "商品条码")
        private String barCode;

        /**
         * 淘宝退款原因
         */
        @ExcelProperty(value = "退款原因")
        @ApiModelProperty(value = "退款原因")
        private String returnNote;

        /**
         * 退款类型名称(优购)
         */
        @ExcelProperty(value = "退款类型名称(1未发货退款 2退货退款 5 拒收退款 9缺货退款 11取消发货退款)")
        @ApiModelProperty(value = "退款类型名称(1未发货退款 2退货退款 5 拒收退款 9缺货退款 11取消发货退款)")
        private String backAmountName;

        /**
         * 退款数量
         */
        @ExcelProperty(value = "退款数量")
        @ApiModelProperty(value = "退款数量")
        private Integer applyRefundNum;

        /**
         * 退款金额
         */
        @ExcelProperty(value = "退款金额")
        @ApiModelProperty(value = "退款金额")
        private BigDecimal totalBalanceAmount;

        /**
         * 发货数量
         */
        @ExcelProperty(value = "发货数量")
        @ApiModelProperty(value = "发货数量")
        private Integer sendQty;

        /**
         * 发货金额
         */
        @ExcelProperty(value = "发货金额")
        @ApiModelProperty(value = "发货金额")
        private BigDecimal sendAmount;

        /**
         * 退货数量
         */
        @ExcelProperty(value = "退货数量")
        @ApiModelProperty(value = "退货数量")
        private Integer returnQty;

        /**
         * 退货金额
         */
        @ExcelProperty(value = "退货金额")
        @ApiModelProperty(value = "退货金额")
        private BigDecimal returnAmount;

        public String getBrandNo() {
            return brandNo;
        }

        public void setBrandNo(String brandNo) {
            this.brandNo = brandNo;
        }

        public String getBrandName() {
            return brandName;
        }

        public void setBrandName(String brandName) {
            this.brandName = brandName;
        }

        public String getItemCode() {
            return itemCode;
        }

        public void setItemCode(String itemCode) {
            this.itemCode = itemCode;
        }

        public String getSizeNo() {
            return sizeNo;
        }

        public void setSizeNo(String sizeNo) {
            this.sizeNo = sizeNo;
        }

        public String getBarCode() {
            return barCode;
        }

        public void setBarCode(String barCode) {
            this.barCode = barCode;
        }

        public String getReturnNote() {
            return returnNote;
        }

        public void setReturnNote(String returnNote) {
            this.returnNote = returnNote;
        }

        public String getBackAmountName() {
            return backAmountName;
        }

        public void setBackAmountName(String backAmountName) {
            this.backAmountName = backAmountName;
        }

        public Integer getApplyRefundNum() {
            return applyRefundNum;
        }

        public void setApplyRefundNum(Integer applyRefundNum) {
            this.applyRefundNum = applyRefundNum;
        }

        public BigDecimal getTotalBalanceAmount() {
            return totalBalanceAmount;
        }

        public void setTotalBalanceAmount(BigDecimal totalBalanceAmount) {
            this.totalBalanceAmount = totalBalanceAmount;
        }

        public Integer getSendQty() {
            return sendQty;
        }

        public void setSendQty(Integer sendQty) {
            this.sendQty = sendQty;
        }

        public BigDecimal getSendAmount() {
            return sendAmount;
        }

        public void setSendAmount(BigDecimal sendAmount) {
            this.sendAmount = sendAmount;
        }

        public Integer getReturnQty() {
            return returnQty;
        }

        public void setReturnQty(Integer returnQty) {
            this.returnQty = returnQty;
        }

        public BigDecimal getReturnAmount() {
            return returnAmount;
        }

        public void setReturnAmount(BigDecimal returnAmount) {
            this.returnAmount = returnAmount;
        }
    }
}
